#ifndef CHEETAH_MODEL_MATERIAL_H
#define CHEETAH_MODEL_MATERIAL_H

#include <vector>

namespace cheetah {
namespace graphics {
class Material {
public:
  Material(const float *Kd, const float *Ka, const float *Ks, 
           const float shininess);
  Material(const float *mat_data);
  Material(const Material &mat);
  Material &operator=(const Material &mat);
  const float *Kd() const { return Kd_; }
  const float *Ka() const { return Ka_; }
  const float *Ks() const { return Ks_; }
  float shininess() const { return shininess_; }
private:
  union {
    struct {
      float Kd_[3];
      float Ka_[3];
      float Ks_[3];
      float shininess_;
    };
    float data_[10];
  };
};
typedef std::vector<Material*> MaterialSet;
} // graphics
} // cheeta
#endif // CHEETAH_MODEL_MATERIAL_H